iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 19
0
自我挑戰組

Python 學習筆記系列 第 19

Day19 Python 基礎 - 文件操作

  • 分享至 

  • xImage
  •  

在來我們來玩一下文件操作,這個在未來工作上,也是會很常用到的功能

Python2.7中,可以用file()來打開文件,而在Python3中,一律都是用open(),接下來在當前目錄下,先建立一個空文件叫test

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

f = open("test")
f.write('i am a ironman')
f.close()

---------------執行結果---------------

io.UnsupportedOperation: not writable

Process finished with exit code 1

報錯了,雖然打開了,但不可以寫,因為預設只有讀取的權限,沒有w(寫入)的權限,詳細可以參考下圖

那到底有幾種模式呢?請看下表

文件操作模式:

Character Meaning
r open for reading (default)
w open for writing, truncating the file first
x create a new file and open it for writing
a open for writing, appending to the end of the file if it exists
b binary mode
t text mode (default)
+ open a disk file for updating (reading and writing)
U universal newline mode (deprecated)

所以依據上表的權限,我們給予w的權限試試

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

f = open("test", 'w')
f.write('i am a ironman')
f.close()

咦!可以寫入了,那就在多寫個幾行試試?

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

f = open("test", 'w')
f.write('i am a ironman')
f.write('my name is tony stark')
f.close()

觀察一下,test這個文字檔,有發現什麼了嗎?是的,你剛剛打的字都已經連起來了,i am a ironmanmy name is tony stark就像是這樣子,明明程式是分別寫二行的,但
怎麼還會連起來呢?這其實是因為沒有使用換行符號(\n),只要在文字最後面加入換行符號就可以換行嚕

再來我們來試試用a權限,先寫入檔案,再讀取檔案看看,試試有什麼作用?

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

f = open("test", 'a')
#f.write('i am a ironman')
f.write('my name is tony stark')
date = f.read()
print('----->', date)
f.close()

---------------執行結果---------------

io.UnsupportedOperation: not readable

Process finished with exit code 1

咦,怎麼會出錯呢?其實是因為a並不能做讀取的動作,它只會在原有的文件裡的最後面一行,附加新增的文字進去

知識點:

  • 文件句柄: 就是文件的記憶體位置,句柄包含了:文件名、字符集、大小、硬碟的起始位置等。

參考資料:

句柄wiki


上一篇
Day18 Python 基礎 - 集合的使用
下一篇
Day20 Python 基礎 - 說好的購物車代碼
系列文
Python 學習筆記29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言